// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	11/6/2014 8:35:28 PM				
// -----------------------------

#ifndef _Oscillator_h
#define _Oscillator_h

#include "Common.h"

class Oscillator
{
public:
	Float				Amplitude;
	Float				Frequency;
	UInt8				Harmonics;

	static Oscillator*	Create(SoundWaveType type);

	virtual ~Oscillator();

	virtual Float		Sample(Float t) const = 0;

	SoundWaveType		GetType() const;

protected:
	Oscillator(SoundWaveType type);

	SoundWaveType		m_Type;

private:
	Oscillator(const Oscillator& refOscillator);
	Oscillator& operator=(const Oscillator& refOscillator);
};

#endif